type CalcType = (num1: number, num2: number) => number;
function calc(calcFn: CalcType) {
  const num1 = 10;
  const num2 = 20;
  const res = calcFn(num1, num2);
  console.log(res);
}

//传入一个相加的函数
function sum(num1: number, num2: number) {
  return num1 + num2;
}
//传入一个相乘的函数
function mul(num1: number, num2: number) {
  return num1 * num2;
}

//上面限制了number类型
// function foo(num1: string) {
//   return num1;
// }

//不报错，上面要传入两个，这个传入一个不报错
function foo(num1: number) {
  return num1;
}

calc(sum);
calc(mul);

calc(foo);

//传入一匿名函数(不需要进行类型声明)
calc(function (num1, num2) {
  return num1 + num2;
});

export {};
